/*
 * @Author: 锦阳
 * @Create: 2021年05月20日
 */
const exec = require('child_process').execSync;

/**
 * Git工具集合
 *
 * @memberof module:nodeUtils
 */
class GitUtils {
    /* istanbul ignore next */
    /**
     * 判断`git commit`是否传入`-m`参数
     * 配合`yorkie`使用，不支持识别husky
     *
     * @returns {boolean}
     */
    static gcHasMsg() {
        const GIT_PARAMS = process.env.GIT_PARAMS;
        return /message/.test(GIT_PARAMS);
    };

    /**
     * 获取当前git用户名称
     *
     * @returns {UserObj} git用户名对象
     */
    static getUser() {
        let name;
        let email;

        try {
            name = exec('git config --get user.name');
            email = exec('git config --get user.email');
        } catch (e) {}

        name = name && JSON.stringify(name.toString().trim()).slice(1, -1);
        email = email && (' <' + email.toString().trim() + '>');
        return {
            name,
            email,
            all: (name ||
                /* istanbul ignore next */
                '') + (email ||
                /* istanbul ignore next */
                ''),
        };
    }
}

module.exports = GitUtils;

/**
 * git用户名对象
 *
 * @typedef {object} UserObj
 * @property {string} name 名字
 * @property {string} email 电子邮箱
 * @property {string} all {name}<{email}>
 * @memberof module:nodeUtils.GitUtils.getUser
 * @alias UserObj
 */
